﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using CqusInfo.RAL.Question;

namespace CqusInfo.DAL.Question.Inteface
{
    public interface IQuestionDAL
    {
        /// <summary>
        /// 得到表的总条数
        /// </summary>
        /// <param name="isDel">true：已删除 false：未删除</param>
        /// <returns></returns>
        Int32 GetCounts(bool isDel);

        /// <summary>
        /// 查找时间段的所有意见信息，以天为单位
        /// </summary>
        /// <param name="startTime">开始时间</param>
        /// <param name="endTime">结束时间</param>
        /// <param name="isDel">true：已删除 false：未删除</param>
        /// <param name="isReplay">true：已回复 false：未回复</param>
        /// <param name="page">页数，第几页 需要减一</param>
        /// <param name="takeItem">每页显示的数目</param>
        /// <returns>List<QuestionModel></returns>
        List<QuestionModel> Query(DateTime startTime, DateTime endTime, bool isDel, bool isReplay, Int32 page, Int32 takeItem);

        /// <summary>
        /// 查询具体信息（包括未删除和已删除的）
        /// </summary>
        /// <param name="qId">ID</param>
        /// <returns>List<QuestionModel></returns>
        List<QuestionModel> Query(string qId);

        /// <summary>
        /// 查询某人的意见信息（可以选择信息是否标志已删除和未删除）
        /// </summary>
        /// <param name="qId">ID</param>
        /// <param name="isDel">true：已删除 false：未删除</param>
        /// <param name="isReplay">true：已回复 false：未回复</param>
        /// <param name="page">页数，第几页 需要减一</param>
        /// <param name="takeItem">每页显示的数目</param>
        /// <returns>List<QuestionModel></returns>
        List<QuestionModel> Query(string userName, bool isDel, bool isReplay, Int32 page, Int32 takeItem);

        /// <summary>
        /// 查询所有信息（可以选择信息是否标志已删除和未删除）
        /// </summary>
        /// <param name="page">页数，第几页 需要减一</param>
        /// <param name="takeItem">每页显示的数目</param>
        /// <param name="isDel">true：已删除 false：未删除</param>
        /// <param name="isReplay">true：已回复 false：未回复</param>
        /// <returns>List<QuestionModel></returns>
        List<QuestionModel> Query(Int32 page, Int32 takeItem, bool isDel, bool isReplay);
 
        /// <summary>
        /// 添加数据 
        /// </summary>
        /// <param name="model">数据集</param>
        /// <returns>1：成功 0：失败</returns>
        Int32 Add(QuestionModel model);

        /// <summary>
        /// 删除（包括 伪删除和彻底删除）
        /// </summary>
        /// <param name="qId">用户名</param>
        /// <param name="isDel">true：已删除 false：未删除</param>
        /// <param name="trueDel">true：彻底删除  false：调用伪删除</param>
        /// <returns>1：成功 0：失败</returns>
        Int32 Delete(string qId, bool isDel, bool trueDel);

        /// <summary>
        /// 更改信息(已回复的信息不让修改)
        /// </summary>
        /// <param name="qId">qId</param>
        /// <param name="model">数据集</param>
        /// <returns>1：成功 0：失败</returns>
        Int32 Update(string qId, QuestionModel model);
    }
}
